import Taro from '@tarojs/taro'
import {pageToLogin} from './utils'
import {HTTP_STATUS} from './config'

const customInterceptor = (chain) => {
  const requestParams = chain.requestParams

  return chain.proceed(requestParams).then((res) => {
    if (res.data.code == '1000') {
      // console.log('@@@@@@res', res)
      throw res
    } else if (
      res.data.code == '101' ||
      res.data.code == '102' ||
      res.data.code == '103' ||
      res.data.code == '104'
    ) {
      pageToLogin()
      return Promise.reject('需要鉴权1')
    }
    // 只要请求成功，不管返回什么状态码，都走这个回调
    if (res.statusCode === HTTP_STATUS.NOT_FOUND) {
      return Promise.reject('请求资源不存在')
    } else if (res.statusCode === HTTP_STATUS.BAD_GATEWAY) {
      return Promise.reject('服务端出现了问题')
    } else if (res.statusCode === HTTP_STATUS.FORBIDDEN) {
      Taro.setStorageSync('Authorization', '')
      pageToLogin()
      // TODO 根据自身业务修改
      return Promise.reject('没有权限访问')
    } else if (res.statusCode == '101') {
      Taro.setStorageSync('Authorization', '')
      console.error('需要鉴权1')
      pageToLogin()
      return Promise.reject('需要鉴权1')
    } else if (res.statusCode === HTTP_STATUS.SUCCESS) {
      return res.data
    }
  })
}

// Taro 提供了两个内置拦截器
// logInterceptor - 用于打印请求的相关信息
// timeoutInterceptor - 在请求超时时抛出错误。
const interceptors = [customInterceptor, Taro.interceptors.logInterceptor]

export default interceptors
